package org.plex.core;

import java.util.List;

import org.plex.model.Assignment;
import org.plex.model.ProcessInstance;
import org.plex.model.Task;
import org.plex.model.User;
import org.plex.searchfilter.TaskFilter;
import org.plex.searchfilter.UserSearchFilter;

import com.adobe.idp.taskmanager.dsc.client.query.TaskQueryServiceException;

public interface TaskSearchManager
{
	List<MultiTypeVariable> getProcessVariable(String processName)
			throws TaskQueryServiceException;

	TaskFilter newTaskFilter();

	List<MultiTypeVariable> getProcessVariableValues(long taskId)
			throws TaskQueryServiceException;

	List<org.plex.model.Process> processList() throws TaskQueryServiceException;

	List<ProcessInstance> processInstanceList(String processName,
			boolean returnVariables) throws TaskQueryServiceException;

	List<Task> taskSearch(
			com.adobe.idp.taskmanager.dsc.client.query.TaskSearchFilter taskSearchFilter)
			throws TaskQueryServiceException;

	List<ProcessInstance> processSearch(
			com.adobe.idp.taskmanager.dsc.client.query.ProcessSearchFilter processSearchFilter)
			throws TaskQueryServiceException;

	List<Task> taskList(TaskFilter filter) throws TaskQueryServiceException;

	List<Assignment> taskHistory(long taskId) throws TaskQueryServiceException;

	List<User> userSearch(
			com.adobe.idp.taskmanager.dsc.client.query.UserSearchFilter filter)
			throws TaskQueryServiceException;

}
